function NodeVector = My_NodeVector_quasi_uniform(n , k)
% 准均匀B样条曲线节点向量
% n+1个控制顶点，k阶（k-1次）曲线

%% 为节点向量预分配变量空间
NodeVector = zeros(n+1+k,1); % 节点向量的数量为n+1+k，NodeVector为n+1+k个元素的列向量

%% 曲线段数
num_Spline = (n+1) - k + 1; % 当控制顶点个数与阶数相等时，曲线为一段，以此类推

%% 根据曲线段数输出节点向量
if num_Spline < 1
    fprintf('error!/n');
else
    if num_Spline == 1
        for i = (k+1) : (n+1+k) % 节点向量的前k个节点为0，后k个节点为1
            NodeVector(i,1) = 1;
        end
    else
        if num_Spline > 1
            for i = (k+1) : (n+1)
                NodeVector(i,1) = NodeVector(i-1,1) + 1/num_Spline; % 节点向量的前k个向量为0，中间向量等距分布
            end
            for i = (n+2) : (n+1+k)
                NodeVector(i,1) = 1; % 节点向量的后k个向量为1
            end
        end
    end
end



